# Electron SDK 版本说明

本文介绍 ARMS 用户体验监控 Electron SDK（@arms/rum-electron）的版本发布历史。

> **说明** 当前 SDK 支持 Electron >= 28.0.0 版本。

## v0.0.8（2026 年 07 月）

### 功能新增

- 新增渲染进程自定义上报门面 `window.ArmsRum`（由 preload 自动暴露）
  - 提供 `sendCustom` / `sendView` / `sendException` / `sendResource` 四个方法，通过 IPC 转发至主进程，复用主进程校验与组装逻辑，语义与主进程 API 一致
  - 不依赖 Browser SDK 注入时机，页面早期即可调用；`autoInject: false` 模式下同样可用；兼容 `contextIsolation` 开启/关闭
  - `sendView` 的视图 URL 由 SDK 自动采集当前页面地址
- 内存采集新增崩溃触发 reason 白名单配置（`collectors.memory.crashReasons`）
  - 默认白名单为 `['crashed', 'oom', 'abnormal-exit', 'launch-failed', 'integrity-failure']`，仅真实异常触发 crash flush
  - 自动排除 `clean-exit` / `killed` 等正常生命周期退出（隐藏 BrowserView 销毁、HMR 重载、utility 进程正常重启），减少误报
- 主进程 API 采集扩展至 Node `http` / `https` 模块（`ApiCollector`）
  - patch `http.request` / `http.get` / `https.request` / `https.get` 四个入口，覆盖默认走 Node http 栈的客户端：**axios 默认 adapter**、got、node-fetch v2 等，无需业务侧改造
  - 与 fetch hook 自动去重：undici 实现的 `globalThis.fetch` 不经过 http 模块，天然无重叠；http 系 fetch polyfill（如 node-fetch v2）经 `AsyncLocalStorage` 上下文标记跳过，避免双报
  - tracing 追踪头注入与 fetch 路径共用同一份 `tracing` 决策；HEAD 方法、SDK 自身请求、`filters` 命中同样自动跳过
  - 经 follow-redirects 发起的重定向链路（axios 默认依赖）按 hop 产出事件（每 hop 一条）

### 数据准确性优化

- 主进程 API 事件（`type='api'`）新增细分耗时与大小字段，与 Browser 端资源事件对齐
  - 新增字段：`size` / `transfer_size` / `connect_duration` / `ssl_duration` / `dns_duration` / `redirect_duration` / `first_byte_duration` / `download_duration`
  - fetch 路径：基于 `perf_hooks` 匹配 undici 写入的 resource entry 计算（Node >= 18.2），并附带 `timing_data`（entry 原始 JSON）
  - http/https 路径：基于 socket 事件（`lookup` / `connect` / `secureConnect`）与响应流锚点计算；上报点调整为响应 body 下载完成，`duration` 语义与 Browser 端完整耗时一致
  - keep-alive 复用连接时 DNS/TCP/TLS 指标天然缺省（与浏览器行为一致）；不合理度量值（非正数或超 1 小时）自动剔除


## v0.0.7（2026 年 07 月）

### 稳定性修复

- 修复断网场景下上报失败触发异常递归的反馈风暴问题
  - 异常采集增加重入保护
  - 上报失败不再抛出未捕获异常
  - 离线队列连续失败 3 次后自动停止重试并记录日志

### 弱网可靠性增强

- 网络请求增加 10 秒超时控制，避免弱网环境下 fetch 无限期挂起
- 离线队列重试采用指数退避策略（最大 4 分钟间隔）
- 离线队列新增写入积压保护，队列繁忙时自动丢弃新写入，防止内存持续增长

### 内存泄漏修复

- Reporter、Shell、ANR 采集器均新增 destroy() 销毁路径
- 确保 powerMonitor 监听器与事件订阅在应用退出时正确释放，避免长期运行后内存泄漏

## v0.0.6（2026 年 07 月）

### 性能优化

- 网络信息采集引入 30 秒缓存机制，避免每次上报时重复调用系统接口枚举网络适配器
- 网络类型与接口名称合并为单次遍历获取，减少主进程阻塞风险
- 提升高频上报场景下的整体性能表现

## v0.0.5（2026 年 07 月）

### ANR 监控

- 新增主进程与渲染进程 ANR 监控（`collectors.anr`）
  - 主进程基于 worker + V8 Inspector 采集调用栈
  - 渲染进程支持 Electron >= 34 调用栈采集

### 离线队列

- 新增离线队列（`offlineQueue`），网络请求失败时事件持久化到磁盘
- 应用重启或网络恢复后自动重发

### Preload 导出

- 新增 `@arms/rum-electron/preload` 导出，支持手动注册 preload 脚本并提供类型声明

### 其他改进

- DevTools 页面事件自动过滤
- 升级 `@arms/rum-core` 至 0.1.7，统一结构化日志输出

## v0.0.4（2026 年 06 月）

### 内存采集

- 新增运行时内存水位采集器（`collectors.memory`）
  - 支持启动基线 / 窗口聚合 / 崩溃 / 退出多触发时机上报

### 崩溃采集增强

- 崩溃事件区分非致命标记（render-process-gone vs 真实 crash）

### 工具与修复

- 新增 Breakpad 符号表生成脚本
- 修复 IPC Bridge 可用性检测

## v0.0.3（2026 年 05 月）

### tRPC 监控

- 新增主进程 tRPC 监控（`armsRum.instrumentTRPC()`）
- tracing 在主进程 fetch 与 tRPC procedure 共用

### API 采集

- 新增主进程 fetch 全局 patch 自动采集 API 事件
- 新增 `parseResourceName` 配置
- `evaluateApi` 返回值调整为 snapshots 写入

## v0.0.2（2026 年 03 月）

### 功能改进

- 新增自定义 session partition 支持
- 优化 preload 注册机制
- 完善 IPC Bridge 通信稳定性

## v0.0.1（2026 年 01 月）

### 首个版本发布

- 主进程异常采集
- 原生崩溃采集（WASM minidump 解析）
- 应用启动性能监控
- 页面 PV 采集
- 渲染进程 Browser SDK 自动注入
- 双通道上报（IPC + Custom Protocol）
